//reduce会对数组中的生一个元素执行reducer方法，将其结果汇总为单个值

/* Array.reduce(function(accumulator,currentValue,index,array){

},initialValue); */

let arr = ['a','b','c'];
//accumulator 上一次回调的返回累加值，第一次执行可能是初始值
//第1次 acc='' currentValue='a' index=0
//第2次 acc='a' ,currentValue='b' index=1
//第3次 acc='ab',currentValue='c' index=2
//初始值可以给也可以不给，如果给的话
//如果不给的话,相当于把第1个元素当成初始值了，并且从第2个元素开始迭代
//第1次 acc='a' currentValue='b' index=1
//第2次 acc='ab' currentValue='c' index=2
//TypeError: Reduce of empty array with no initial value
let result = arr.reduce(function(acc,currentValue,index){
    console.log(acc,currentValue,index)
    return acc+currentValue;
},'');
console.log(result)

//第1次 acc='' currentValue='c' index=2
//第2次 acc='c' ,currentValue='b' index=1
//第3次 acc='cb',currentValue='a' index=0
//cba
 let result2 = arr.reduceRight(function(acc,currentValue,index){
    console.log(acc,currentValue,index)
    return acc+currentValue;
},'');
console.log(result2)


let str = [1, 2, 'a', 'true']

result = str.reduce((acc, currentValue, index) => {
     acc[index] = currentValue
     return acc;
}, {})
console.log(result);

